/*
 * Der Hauptzweck der Klasse StringAlgorithmTest ist, die Boost-Bibliotheck "string_algo"
 * ( http://www.boost.org/doc/libs/1_37_0/doc/html/string_algo.html ) anhand von CppUnit-Tests
 * vorzustellen.
 *
 * @author  Benjamin Friedrich, Ken Dahm
 * @version 1.0  17.01.2009
 */
#ifndef BASICPATHTEST_HPP_
#define BASICPATHTEST_HPP_

#include <cppunit/TestFixture.h>
#include <cppunit/extensions/HelperMacros.h>
#include <boost/algorithm/string.hpp>
#include <boost/algorithm/string/trim.hpp>

class StringAlgorithmTest : public CppUnit::TestFixture
{
	// Aufbau der TestSuite
	CPPUNIT_TEST_SUITE(StringAlgorithmTest);
		     CPPUNIT_TEST(testCaseConversion);
		     CPPUNIT_TEST(testTrimming);
		     CPPUNIT_TEST(testPredicates);
		     CPPUNIT_TEST(testEraseReplace);
	CPPUNIT_TEST_SUITE_END();

private:
	/**
	 * Testet die von string_algo bereitgestellten Funktionen
	 * zur Änderung der Groß- und Kleinschreibung der Zeichen
	 * in einem String. Eine ähnliche Funktionalität wird von
	 * der C++ - Standardbibliothekt bereits bereitgestellt,
	 * allerdings beziehen sich diese Operationen auf einen
	 * einzelnen Character und nicht den ganzen String.
	 */
	void testCaseConversion();

	/**
	 * Testet das Trimmen von Strings, wobei sich hier die
	 * trim-Operationen nicht nur auf Whitespaces beziehen.
	 */
	void testTrimming();

	/*
	 * Testet die von Boost bereitgestellten Funktionen
	 * zur Prüfung von Strings, z.B. starts_with(), contains(), usw.
	 */
	void testPredicates();

	/**
	 * Testet die Replace- und Erase-Funktionen von der Bibliothek
	 * string_algo. Die Replace- und Erase-Funktionen
	 */
	void testEraseReplace();
};

#endif /* BASICPATHTEST_HPP_ */
